/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.persistence;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import pe.gov.mtc.dgac.licencias.bean.ProcesoTO;
import pe.gov.mtc.dgac.licencias.exception.TransactionException;
import pe.gov.mtc.dgac.licencias.util.Utiles;

/**
 *
 * @author elvis
 */

@Repository
public class ProcesoImplDAO  extends HibernateDaoSupport  implements ProcesoDAO{
    
     private final static Logger logger = Logger.getLogger(ProcesoImplDAO.class);
    
    @Autowired
    public ProcesoImplDAO(SessionFactory sessionFactory){
         setHibernateTemplate( new HibernateTemplate(sessionFactory));
    }
    
    @Override
    public List<ProcesoTO> listarProcesos(ProcesoTO proceso) throws TransactionException {
    
        DetachedCriteria criteria = DetachedCriteria.forClass(ProcesoTO.class);
        
        logger.debug("listarProcesos()");
        if( !Utiles.nullToBlank( proceso.getTipoProcesoTO().getCodTipoproceso() ).equals("")){
             criteria.add( Restrictions.eq("tipoProcesoTO.codTipoproceso", proceso.getTipoProcesoTO().getCodTipoproceso() )) ;
        }
        if( !Utiles.nullToBlank( proceso.getCertificado() ).equals("")){
             criteria.add( Restrictions.eq("certificado", proceso.getCertificado() ));
        }
        if( !Utiles.nullToBlank( proceso.getResponsableProc() ).equals("0")){
             criteria.add( Restrictions.eq("responsableProc", proceso.getResponsableProc() ));
        }
        if( !Utiles.nullToBlank( proceso.getDescProceso() ).equals("")){
             criteria.add( Restrictions.like("descProceso", proceso.getDescProceso() ));
        }
        return getHibernateTemplate().findByCriteria(criteria);
    }

    @Override
    public void insertarProceso(ProcesoTO prcoeso) throws TransactionException {
        //insert("Proceso.insertProceso", prcoeso);
        this.getHibernateTemplate().saveOrUpdate(prcoeso);
    }

    @Override
    public ProcesoTO obtenerProcesos(Integer codproceso) throws TransactionException {
         Query query = getSession().createQuery(" from ProcesoTO a where codProceso = :id ")
        .setInteger("id", codproceso);
        return (ProcesoTO) query.uniqueResult();
    }

    
    
}

